#include "atomic_0824_telemetric_data_service.h"

int getTelemetryData(TelemetryInput *telemetryInput, TelemetryOutput *telemetryOutput) {
    // 检查输入输出指针有效性
    if (telemetryInput == nullptr || telemetryOutput == nullptr) {
        return ATOMIC_SERVICE_ERROR;
    }

    // 模拟传感器数据采集（实际场景应从硬件/驱动获取）
    switch (telemetryInput->sensor_type) {
        case 1: // 温度传感器
            telemetryOutput->temperature = 25.6f + (telemetryInput->device_id % 5) * 0.1f;
            telemetryOutput->humidity = -1.0f; // 无效值
            telemetryOutput->pressure = -1.0f;  // 无效值
            break;
        case 2: // 湿度传感器
            telemetryOutput->temperature = -1.0f; // 无效值
            telemetryOutput->humidity = 60.2f + (telemetryInput->device_id % 3) * 0.5f;
            telemetryOutput->pressure = -1.0f;  // 无效值
            break;
        case 3: // 压力传感器
            telemetryOutput->temperature = -1.0f; // 无效值
            telemetryOutput->humidity = -1.0f; // 无效值
            telemetryOutput->pressure = 101.3f + (telemetryInput->device_id % 2) * 0.2f;
            break;
        default:
            return ATOMIC_SERVICE_NOT_SUPPORT; // 不支持的传感器类型
    }

    // 获取当前时间戳（毫秒级）
    auto now = std::chrono::system_clock::now();
    auto timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(
        now.time_since_epoch()
    ).count();
    telemetryOutput->timestamp = timestamp;

    return ATOMIC_SERVICE_SUCCESS;
}